home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1992 June: ROMin Holiday / ADC Developer CD (1992-06) (''ROMin Holiday'')_iso / Developer Connection - 06-1992.iso / Developer Essentials / MPW Interfaces & Libraries / CIncludes / SoundInput.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-01-29  |  6.0 KB  |  153 lines  |  [TEXT/MPS ]

  1.  
  2. /************************************************************
  3.  
  4. Created: Thursday, September 5, 1991 at 4:15 PM
  5.  SoundInput.h
  6.  C Interface to the Macintosh Libraries
  7.  
  8.  
  9.   Copyright Apple Computer, Inc. 1990-1991
  10.   All rights reserved
  11.  
  12. ************************************************************/
  13.  
  14.  
  15. #ifndef __SOUNDINPUT__
  16. #define __SOUNDINPUT__
  17.  
  18. #ifndef __TYPES__
  19. #include <Types.h>
  20. #endif
  21.  
  22. #ifndef __DIALOGS__
  23. #include <Dialogs.h>
  24. #endif
  25.  
  26. #ifndef __FILES__
  27. #include <Files.h>
  28. #endif
  29.  
  30.  
  31. enum {
  32.  
  33.  siDeviceIsConnected = 1,                /* input device is connected and ready for input */
  34.  siDeviceNotConnected = 0,                /* input device is not connected */
  35.  siDontKnowIfConnected = -1,            /* can't tell if input device is connected */
  36.  siReadPermission = 0,                    /* permission passed to SPBOpenDevice */
  37.  siWritePermission = 1                    /* permission passed to SPBOpenDevice */
  38.  
  39. /* Info Selectors for Sound Input Drivers */
  40.  
  41. #define siDeviceConnected 'dcon'        /* input device connection status */
  42. #define siAGCOnOff 'agc '                /* automatic gain control state */
  43. #define siPlayThruOnOff 'plth'            /* playthrough state */
  44. #define siTwosComplementOnOff 'twos'    /* two's complement state */
  45. #define siLevelMeterOnOff 'lmet'        /* level meter state */
  46. #define siRecordingQuality 'qual'        /* recording quality */
  47. #define siVoxRecordInfo 'voxr'            /* VOX record parameters */
  48. #define siVoxStopInfo 'voxs'            /* VOX stop parameters */
  49. #define siNumberChannels 'chan'            /* current number of channels */
  50. #define siSampleSize 'ssiz'                /* current sample size */
  51. #define siSampleRate 'srat'                /* current sample rate */
  52. #define siCompressionType 'comp'        /* current compression type */
  53. #define siCompressionFactor 'cmfa'        /* current compression factor */
  54. #define siCompressionHeader 'cmhd'        /* return compression header */
  55. #define siDeviceName 'name'                /* input device name */
  56. #define siDeviceIcon 'icon'                /* input device icon */
  57. #define siDeviceBufferInfo 'dbin'        /* size of interrupt buffer */
  58. #define siSampleSizeAvailable 'ssav'    /* sample sizes available */
  59. #define siSampleRateAvailable 'srav'    /* sample rates available */
  60. #define siCompressionAvailable 'cmav'    /* compression types available */
  61. #define siChannelAvailable 'chav'        /* number of channels available */
  62. #define siAsync 'asyn'                    /* asynchronous capability */
  63. #define siOptionsDialog 'optd'            /* display options dialog */
  64. #define siContinuous 'cont'                /* continous recording */
  65. #define siActiveChannels 'chac'            /* active channels */
  66. #define siActiveLevels 'lmac'            /* active meter levels */
  67. #define siInputSource 'sour'            /* input source selector */
  68. #define siInitializeDriver 'init'        /* reserved for internal use only */
  69. #define siCloseDriver 'clos'            /* reserved for internal use only */
  70. #define siPauseRecording 'paus'            /* reserved for internal use only */
  71. #define siUserInterruptProc 'user'        /* reserved for internal use only */
  72.  
  73. /* Qualities */
  74. #define siBestQuality 'best'
  75. #define siBetterQuality 'betr'
  76. #define siGoodQuality 'good'
  77. };
  78.  
  79. /* Sound Input Parameter Block */
  80. struct SPB {
  81.  long inRefNum;                            /* reference number of sound input device */
  82.  unsigned long count;                    /* number of bytes to record */
  83.  unsigned long milliseconds;            /* number of milliseconds to record */
  84.  unsigned long bufferLength;            /* length of buffer in bytes */
  85.  Ptr bufferPtr;                            /* buffer to store sound data in */
  86.  ProcPtr completionRoutine;                /* completion routine */
  87.  ProcPtr interruptRoutine;                /* interrupt routine */
  88.  long userLong;                            /* user-defined field */
  89.  OSErr error;                            /* error */
  90.  long unused1;                            /* reserved - must be zero */
  91. };
  92.  
  93. typedef struct SPB SPB;
  94. typedef SPB *SPBPtr;
  95.  
  96.  
  97. #ifdef __cplusplus
  98. extern "C" {
  99. #endif
  100. pascal NumVersion SPBVersion(void)
  101.  = {0x203C,0x0000,0x0014,0xA800}; 
  102. pascal OSErr SndRecord(ModalFilterProcPtr filterProc,Point corner,OSType quality,
  103.  Handle *sndHandle)
  104.  = {0x203C,0x0804,0x0014,0xA800}; 
  105. pascal OSErr SndRecordToFile(ModalFilterProcPtr filterProc,Point corner,
  106.  OSType quality,short fRefNum)
  107.  = {0x203C,0x0708,0x0014,0xA800}; 
  108. pascal OSErr SPBSignInDevice(short deviceRefNum,ConstStr255Param deviceName)
  109.  = {0x203C,0x030C,0x0014,0xA800}; 
  110. pascal OSErr SPBSignOutDevice(short deviceRefNum)
  111.  = {0x203C,0x0110,0x0014,0xA800}; 
  112. pascal OSErr SPBGetIndexedDevice(short count,Str255 deviceName,Handle *deviceIconHandle)
  113.  = {0x203C,0x0514,0x0014,0xA800}; 
  114. pascal OSErr SPBOpenDevice(ConstStr255Param deviceName,short permission,
  115.  long *inRefNum)
  116.  = {0x203C,0x0518,0x0014,0xA800}; 
  117. pascal OSErr SPBCloseDevice(long inRefNum)
  118.  = {0x203C,0x021C,0x0014,0xA800}; 
  119. pascal OSErr SPBRecord(SPBPtr inParamPtr,Boolean asynchFlag)
  120.  = {0x203C,0x0320,0x0014,0xA800}; 
  121. pascal OSErr SPBRecordToFile(short fRefNum,SPBPtr inParamPtr,Boolean asynchFlag)
  122.  = {0x203C,0x0424,0x0014,0xA800}; 
  123. pascal OSErr SPBPauseRecording(long inRefNum)
  124.  = {0x203C,0x0228,0x0014,0xA800}; 
  125. pascal OSErr SPBResumeRecording(long inRefNum)
  126.  = {0x203C,0x022C,0x0014,0xA800}; 
  127. pascal OSErr SPBStopRecording(long inRefNum)
  128.  = {0x203C,0x0230,0x0014,0xA800}; 
  129. pascal OSErr SPBGetRecordingStatus(long inRefNum,short *recordingStatus,
  130.  short *meterLevel,unsigned long *totalSamplesToRecord,unsigned long *numberOfSamplesRecorded,
  131.  unsigned long *totalMsecsToRecord,unsigned long *numberOfMsecsRecorded)
  132.  = {0x203C,0x0E34,0x0014,0xA800}; 
  133. pascal OSErr SPBGetDeviceInfo(long inRefNum,OSType infoType,char *infoData)
  134.  = {0x203C,0x0638,0x0014,0xA800}; 
  135. pascal OSErr SPBSetDeviceInfo(long inRefNum,OSType infoType,char *infoData)
  136.  = {0x203C,0x063C,0x0014,0xA800}; 
  137. pascal OSErr SPBMillisecondsToBytes(long inRefNum,long *milliseconds)
  138.  = {0x203C,0x0440,0x0014,0xA800}; 
  139. pascal OSErr SPBBytesToMilliseconds(long inRefNum,long *byteCount)
  140.  = {0x203C,0x0444,0x0014,0xA800}; 
  141. pascal OSErr SetupSndHeader(Handle sndHandle,short numChannels,Fixed sampleRate,
  142.  short sampleSize,OSType compressionType,short baseNote,unsigned long numBytes,
  143.  short *headerLen)
  144.  = {0x203C,0x0D48,0x0014,0xA800}; 
  145. pascal OSErr SetupAIFFHeader(short fRefNum,short numChannels,Fixed sampleRate,
  146.  short sampleSize,OSType compressionType,unsigned long numBytes,unsigned long numFrames)
  147.  = {0x203C,0x0B4C,0x0014,0xA800}; 
  148. #ifdef __cplusplus
  149. }
  150. #endif
  151.  
  152. #endif
  153.